home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / shells / scsh-0.4 / scsh-0 / scsh-0.4.2 / scsh / next / fdflags.scm < prev    next >
Text File  |  1995-10-13  |  2KB  |  81 lines

  1. ;;; Flags for open(2) and fcntl(2).
  2. ;;; Copyright (c) 1993 by Olin Shivers.
  3.  
  4. (define-syntax define-open-flags
  5.   (syntax-rules ()
  6.     ((define-opens form ...)
  7.      (begin (define-enum-constant "open" . form) ...))))
  8.  
  9. (define-open-flags
  10.   ;; POSIX
  11.   (read            0)
  12.   (write        1)
  13.   (read+write        2)
  14.   (nonblocking        4)
  15.   (append        #o10)
  16.   (no-control-tty    #o20)
  17.   (create        #o1000)
  18.   (truncate        #o2000)
  19.   (exclusive        #o4000)
  20.  
  21.   ;; NextStep
  22.   (sync        #o1000000)    ; Synchronous writes
  23.   (async    #o100))        ; Signal process group when data
  24.  
  25. (define open/access-mask
  26.   (bitwise-ior open/read
  27.            (bitwise-ior open/write open/read+write)))
  28.  
  29. ;;;; fcntl
  30. ;;;; Rough sketch only. Will define a separate proc for each fcntl command.
  31. ;
  32. ;;;; fcntl commands
  33. ;dup
  34. ;
  35. ;get-flags    ; Only gives close-on-exec bit.
  36. ;set-flags
  37. ;
  38. ;get-status    ; Returns open flags + get-status flags (below)
  39. ;set-status    ; Can set: append, sync, async, nbio, nonblocking, no-delay
  40. ;
  41. ;get-lock
  42. ;set-lock
  43. ;nonblocking-set-lock
  44. ;
  45. ;get-record-lock
  46. ;set-record-lock
  47. ;set-record-lock-noblock
  48. ;
  49. ;get-owner            ; Not POSIX
  50. ;set-owner            ; Not POSIX
  51. ;remote-set-lock        ; Not POSIX
  52. ;nonblocking-remote-set-lock    ; Not POSIX
  53. ;remote-get-lock        ; Not POSIX
  54. ;
  55. ;;;; Flags
  56. ;
  57. ;close-on-exec    ; get-flags
  58. ;
  59. ;async        ; get-status
  60. ;no-delay    ; get-status
  61. ;nbio        ; get-status
  62. ;
  63. ;;; These are internal; they are not part of the supported scsh interface.
  64.  
  65. (define fcntl/close-on-exec         1)
  66.  
  67. (define fcntl/dupfd            0)
  68. (define fcntl/get-fd-flags        1)
  69. (define fcntl/set-fd-flags        2)
  70. (define fcntl/get-file-flags        3)
  71. (define fcntl/set-file-flags        4)
  72. (define fcntl/get-owner            5)    ; Not POSIX
  73. (define fcntl/set-owner            6)    ; Not POSIX
  74. (define fcntl/get-record-lock        7)    ; F_GETLK
  75. (define fcntl/set-record-lock-noblock    8)    ; F_SETLK
  76. (define fcntl/set-record-lock        9)    ; F_SETLKW
  77.  
  78. (define lock/read    1)    ; F_RDLCK
  79. (define lock/write    2)    ; F_WRLCK
  80. (define lock/release    3)    ' F_UNLCK
  81.